/* Copyright (c) 2004-2005 The Regents of The University of Michigan
 * All rights reserved.
 *  *
 *   * Redistribution and use in source and binary forms, with or without
 *    * modification, are permitted provided that the following conditions are
 *     * met: redistributions of source code must retain the above copyright
 *      * notice, this list of conditions and the following disclaimer;
 *       * redistributions in binary form must reproduce the above copyright
 *        * notice, this list of conditions and the following disclaimer in the
 *         * documentation and/or other materials provided with the distribution;
 *          * neither the name of the copyright holders nor the names of its
 *           * contributors may be used to endorse or promote products derived from
 *            * this software without specific prior written permission.
 *             *
 *              * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *               * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *                * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *                 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *                  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *                   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         *                    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         *                     * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *                      * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *                       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *                        * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *                         *
 *                          * Authors: Nachiappan Chidambaram N
 *                           */

#ifndef __CNN_HH__
#define __CNN_HH__

#include <fstream>
#include <iostream>
//#include "mem/ruby/common/Address.hh"

#include<vector>
#include<string>

 //nachi adds
extern bool true_fetch;

extern std::ifstream em_trace_file;
extern long lines_read_cpu;
extern std::string em_trace_file_name;

extern bool gpu_trace_enable;
extern bool cpu_trace_enable;
extern std::string em_gputrace_file_name;
extern std::ifstream em_gputrace_file;
extern bool mem_optimized;
extern bool mem_separate_mem;

//Frames Stats and related Variables
extern int cpu_frames_displayed;	//number of frames sent by the core
extern int gpu_frames_displayed;	//number of frames sent by the GPU
extern long fps_stall_cycles;
extern long total_fps_stall_cycles;
extern long total_mem_ctrl0_delay;
extern long total_mem_ctrl1_delay;

extern long total_mem_ctrl0_latency;
extern long total_mem_ctrl1_latency;
;
extern long total_mem_ctrl1_delay;

//extern int no_of_frames_in_transmit=0;
extern int frames_dropped_cpu_slower;
extern int frames_dropped_cpu_faster;
extern float avg_fps; //Frames Per Second
//extern double avg_fdps=0.0;  //Frames Dropped Per Second

//Core Variables
extern long long current_cycle;
extern long long start_tick;
extern int global_mem_controller_count;

//Display IP Options
extern long long display_tick;  // DIsplay IP's clock ticks
extern long long display_frame_id;  // DIsplay IP's clock ticks


extern int ip_master;

#define IPS 7

#define CPU 0
#define FB 1
#define NW 2
#define SND 3
#define CAM 4
#define VD 5
#define GPU 6

#endif


